home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / Lists.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  9.6 KB  |  297 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        Lists.mod
  3.  
  4.      Contains:    List Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$IF UNDEFINED OLDROUTINENAMES*)
  21. (*$SET OLDROUTINENAMES FALSE*)
  22. (*$END*)
  23. (*$TAGS-*)
  24. (*$CALLING PASCAL*)
  25. MODULE Lists;
  26.  
  27. IMPORT SYSTEM, Types, Quickdraw, Controls;
  28.  
  29. (* $PUSH*)
  30. (* $ALIGN MAC68K*)
  31. (* $LibExport+*)
  32. (*$IF UNDEFINED STRICT_LISTS *)
  33. (*$SET STRICT_LISTS FALSE*)
  34. (*$END*)
  35. (*$IF NOT STRICT_LISTS *)
  36.  
  37. CONST
  38.     lDoVAutoscroll*                = 2;
  39.     lDoHAutoscroll*                = 1;
  40.     lOnlyOne*                    = -128;
  41.     lExtendDrag*                    = 64;
  42.     lNoDisjoint*                    = 32;
  43.     lNoExtend*                    = 16;
  44.     lNoRect*                        = 8;
  45.     lUseSense*                    = 4;
  46.     lNoNilHilite*                = 2;
  47.  
  48. (*$END*)
  49.  
  50. CONST
  51.     lInitMsg*                    = 0;
  52.     lDrawMsg*                    = 1;
  53.     lHiliteMsg*                    = 2;
  54.     lCloseMsg*                    = 3;
  55.  
  56. (*$IF STRICT_LISTS *)
  57.     
  58. TYPE
  59.     ListRef* = Types.Ptr;
  60.  
  61.     ListHandle* = ListRef;
  62.  
  63. (*$ELSE*)
  64.     
  65. TYPE
  66.     ListPtr* = POINTER TO ListRec;
  67.     ListHandle* = HANDLE TO ListRec (*ΔΔ POINTER TO ListPtr*);
  68.  
  69.     ListRef* = ListHandle;
  70.  
  71. (*$END*)
  72.     Cell* = Types.Point;
  73.  
  74.     ListBounds* = Types.Rect;
  75.  
  76.     DataArray* = (*ΔΔPACKEDΔΔ*) ARRAY 32001 (*ΔΔ[0..32000]ΔΔ*) OF CHAR;
  77.  
  78.     DataPtr* = POINTER TO DataArray;
  79.     DataHandle* = HANDLE TO DataArray (*ΔΔ POINTER TO DataPtr*);
  80.  
  81.     ListSearchProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (aPtr: Types.Ptr; bPtr: Types.Ptr; aLen: INTEGER; bLen: INTEGER): INTEGER;
  82.     (*
  83.         ListClickLoopProcPtr uses register based parameters on the 68k and cannot
  84.         be written in or called from a high-level language without the help of
  85.         mixed mode or assembly glue.
  86.  
  87.         In*:
  88.          =>                 .?
  89.         Out*:
  90.          <= return value    D0.B
  91.     *)
  92.     ListClickLoopProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE ListClickLoop*(): BOOLEAN; *)
  93.     ListSearchUPP* = Types.UniversalProcPtr;
  94.     ListClickLoopUPP* = Types.UniversalProcPtr;
  95.  
  96. (*$IF NOT STRICT_LISTS *)
  97.     ListRec* = RECORD
  98.         rView*:                    Types.Rect;
  99.         port*:                    Quickdraw.GrafPtr;
  100.         indent*:                    Types.Point;
  101.         cellSize*:                Types.Point;
  102.         visible*:                ListBounds;
  103.         vScroll*:                Controls.ControlRef;
  104.         hScroll*:                Controls.ControlRef;
  105.         selFlags*:                Types.SInt8;
  106.         lActive*:                BOOLEAN;
  107.         lReserved*:                Types.SInt8;
  108.         listFlags*:                Types.SInt8;
  109.         clikTime*:                LONGINT;
  110.         clikLoc*:                Types.Point;
  111.         mouseLoc*:                Types.Point;
  112.         lClickLoop*:                ListClickLoopUPP;
  113.         lastClick*:                Cell;
  114.         refCon*:                    LONGINT;
  115.         listDefProc*:            Types.Handle;
  116.         userHandle*:                Types.Handle;
  117.         dataBounds*:                ListBounds;
  118.         cells*:                    DataHandle;
  119.         maxIndex*:                INTEGER;
  120.         cellArray*:                ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF INTEGER;
  121.     END;
  122.  
  123. (*$END*)
  124.     ListDefProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (lMessage: INTEGER; lSelect: BOOLEAN; VAR lRect: Types.Rect; lCell: Cell; lDataOffset: INTEGER; lDataLen: INTEGER; lHandle: ListRef);
  125.     ListCellDrawProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (lMessage: INTEGER; lSelect: BOOLEAN; VAR lRect: Types.Rect; lCell: Cell; dataPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; lDataLen: INTEGER; lHandle: ListRef);
  126.     ListDefUPP* = Types.UniversalProcPtr;
  127.     ListCellDrawUPP* = Types.UniversalProcPtr;
  128.  
  129. CONST
  130.     uppListSearchProcInfo* = $00002BE0; (* PROCEDURE (4 byte param, 4 byte param, 2 byte param, 2 byte param): 2 byte result; *)
  131.     uppListClickLoopProcInfo* = $00000012; (* Register PROCEDURE : 1 byte in D0; *)
  132.     uppListDefProcInfo* = $000EBD80; (* PROCEDURE (2 byte param, 1 byte param, 4 byte param, 4 byte param, 2 byte param, 2 byte param, 4 byte param); *)
  133.     uppListCellDrawProcInfo* = $000EFD80; (* PROCEDURE (2 byte param, 1 byte param, 4 byte param, 4 byte param, 4 byte param, 2 byte param, 4 byte param); *)
  134.  
  135. PROCEDURE NewListSearchProc*(userRoutine: ListSearchProcPtr): ListSearchUPP;
  136.     (*$IF NOT GENERATINGCFM *)
  137.     INLINE PASCAL $2E9F;
  138.     (*$END*)
  139.  
  140. PROCEDURE NewListClickLoopProc*(userRoutine: ListClickLoopProcPtr): ListClickLoopUPP;
  141.     (*$IF NOT GENERATINGCFM *)
  142.     INLINE PASCAL $2E9F;
  143.     (*$END*)
  144.  
  145. PROCEDURE NewListDefProc*(userRoutine: ListDefProcPtr): ListDefUPP;
  146.     (*$IF NOT GENERATINGCFM *)
  147.     INLINE PASCAL $2E9F;
  148.     (*$END*)
  149.  
  150. PROCEDURE NewListCellDrawProc*(userRoutine: ListCellDrawProcPtr): ListCellDrawUPP;
  151.     (*$IF NOT GENERATINGCFM *)
  152.     INLINE PASCAL $2E9F;
  153.     (*$END*)
  154.  
  155. PROCEDURE CallListSearchProc*(aPtr: Types.Ptr; bPtr: Types.Ptr; aLen: INTEGER; bLen: INTEGER; userRoutine: ListSearchUPP): INTEGER;
  156.     (*$IF NOT GENERATINGCFM*)
  157.     INLINE PASCAL $205F, $4E90;
  158.     (*$END*)
  159.  
  160. PROCEDURE CallListClickLoopProc*(userRoutine: ListClickLoopUPP): BOOLEAN;
  161.     (*$IF NOT GENERATINGCFM*)
  162.     INLINE PASCAL ; (*••*)
  163.     (*To be implemented*:  Glue to move parameters into registers.*)
  164.     (*$END*)
  165.  
  166. PROCEDURE CallListDefProc*(lMessage: INTEGER; lSelect: BOOLEAN; VAR lRect: Types.Rect; lCell: Cell; lDataOffset: INTEGER; lDataLen: INTEGER; lHandle: ListRef; userRoutine: ListDefUPP);
  167.     (*$IF NOT GENERATINGCFM*)
  168.     INLINE PASCAL $205F, $4E90;
  169.     (*$END*)
  170.  
  171. PROCEDURE CallListCellDrawProc*(lMessage: INTEGER; lSelect: BOOLEAN; VAR lRect: Types.Rect; lCell: Cell; dataPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; lDataLen: INTEGER; lHandle: ListRef; userRoutine: ListCellDrawUPP);
  172.     (*$IF NOT GENERATINGCFM*)
  173.     INLINE PASCAL $205F, $4E90;
  174.     (*$END*)
  175.  
  176. PROCEDURE LNew*((*CONST*)VAR rView: Types.Rect; (*CONST*)VAR dataBounds: ListBounds; cSize: Types.Point; theProc: INTEGER; theWindow: Quickdraw.WindowRef; drawIt: BOOLEAN; hasGrow: BOOLEAN; scrollHoriz: BOOLEAN; scrollVert: BOOLEAN): ListRef;
  177.     (*$IF NOT GENERATINGCFM*)
  178.     INLINE PASCAL $3F3C, $0044, $A9E7;
  179.     (*$END*)
  180. PROCEDURE LDispose*(lHandle: ListRef);
  181.     (*$IF NOT GENERATINGCFM*)
  182.     INLINE PASCAL $3F3C, $0028, $A9E7;
  183.     (*$END*)
  184. PROCEDURE LAddColumn*(count: INTEGER; colNum: INTEGER; lHandle: ListRef): INTEGER;
  185.     (*$IF NOT GENERATINGCFM*)
  186.     INLINE PASCAL $3F3C, $0004, $A9E7;
  187.     (*$END*)
  188. PROCEDURE LAddRow*(count: INTEGER; rowNum: INTEGER; lHandle: ListRef): INTEGER;
  189.     (*$IF NOT GENERATINGCFM*)
  190.     INLINE PASCAL $3F3C, $0008, $A9E7;
  191.     (*$END*)
  192. PROCEDURE LDelColumn*(count: INTEGER; colNum: INTEGER; lHandle: ListRef);
  193.     (*$IF NOT GENERATINGCFM*)
  194.     INLINE PASCAL $3F3C, $0020, $A9E7;
  195.     (*$END*)
  196. PROCEDURE LDelRow*(count: INTEGER; rowNum: INTEGER; lHandle: ListRef);
  197.     (*$IF NOT GENERATINGCFM*)
  198.     INLINE PASCAL $3F3C, $0024, $A9E7;
  199.     (*$END*)
  200. PROCEDURE LGetSelect*(next: BOOLEAN; VAR theCell: Cell; lHandle: ListRef): BOOLEAN;
  201.     (*$IF NOT GENERATINGCFM*)
  202.     INLINE PASCAL $3F3C, $003C, $A9E7;
  203.     (*$END*)
  204. PROCEDURE LLastClick*(lHandle: ListRef): LONGINT (*ΔΔ Cell*);
  205.     (*$IF NOT GENERATINGCFM*)
  206.     INLINE PASCAL $3F3C, $0040, $A9E7;
  207.     (*$END*)
  208. PROCEDURE LNextCell*(hNext: BOOLEAN; vNext: BOOLEAN; VAR theCell: Cell; lHandle: ListRef): BOOLEAN;
  209.     (*$IF NOT GENERATINGCFM*)
  210.     INLINE PASCAL $3F3C, $0048, $A9E7;
  211.     (*$END*)
  212. PROCEDURE LSearch*(dataPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; dataLen: INTEGER; searchProc: ListSearchUPP; VAR theCell: Cell; lHandle: ListRef): BOOLEAN;
  213.     (*$IF NOT GENERATINGCFM*)
  214.     INLINE PASCAL $3F3C, $0054, $A9E7;
  215.     (*$END*)
  216. PROCEDURE LSize*(listWidth: INTEGER; listHeight: INTEGER; lHandle: ListRef);
  217.     (*$IF NOT GENERATINGCFM*)
  218.     INLINE PASCAL $3F3C, $0060, $A9E7;
  219.     (*$END*)
  220. PROCEDURE LSetDrawingMode*(drawIt: BOOLEAN; lHandle: ListRef);
  221.     (*$IF NOT GENERATINGCFM*)
  222.     INLINE PASCAL $3F3C, $002C, $A9E7;
  223.     (*$END*)
  224. PROCEDURE LScroll*(dCols: INTEGER; dRows: INTEGER; lHandle: ListRef);
  225.     (*$IF NOT GENERATINGCFM*)
  226.     INLINE PASCAL $3F3C, $0050, $A9E7;
  227.     (*$END*)
  228. PROCEDURE LAutoScroll*(lHandle: ListRef);
  229.     (*$IF NOT GENERATINGCFM*)
  230.     INLINE PASCAL $3F3C, $0010, $A9E7;
  231.     (*$END*)
  232. PROCEDURE LUpdate*(theRgn: Quickdraw.RgnHandle; lHandle: ListRef);
  233.     (*$IF NOT GENERATINGCFM*)
  234.     INLINE PASCAL $3F3C, $0064, $A9E7;
  235.     (*$END*)
  236. PROCEDURE LActivate*(act: BOOLEAN; lHandle: ListRef);
  237.     (*$IF NOT GENERATINGCFM*)
  238.     INLINE PASCAL $4267, $A9E7;
  239.     (*$END*)
  240. PROCEDURE LCellSize*(cSize: Types.Point; lHandle: ListRef);
  241.     (*$IF NOT GENERATINGCFM*)
  242.     INLINE PASCAL $3F3C, $0014, $A9E7;
  243.     (*$END*)
  244. PROCEDURE LClick*(pt: Types.Point; modifiers: INTEGER; lHandle: ListRef): BOOLEAN;
  245.     (*$IF NOT GENERATINGCFM*)
  246.     INLINE PASCAL $3F3C, $0018, $A9E7;
  247.     (*$END*)
  248. PROCEDURE LAddToCell*(dataPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; dataLen: INTEGER; theCell: Cell; lHandle: ListRef);
  249.     (*$IF NOT GENERATINGCFM*)
  250.     INLINE PASCAL $3F3C, $000C, $A9E7;
  251.     (*$END*)
  252. PROCEDURE LClrCell*(theCell: Cell; lHandle: ListRef);
  253.     (*$IF NOT GENERATINGCFM*)
  254.     INLINE PASCAL $3F3C, $001C, $A9E7;
  255.     (*$END*)
  256. PROCEDURE LGetCell*(dataPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR dataLen: INTEGER; theCell: Cell; lHandle: ListRef);
  257.     (*$IF NOT GENERATINGCFM*)
  258.     INLINE PASCAL $3F3C, $0038, $A9E7;
  259.     (*$END*)
  260. PROCEDURE LRect*(VAR cellRect: Types.Rect; theCell: Cell; lHandle: ListRef);
  261.     (*$IF NOT GENERATINGCFM*)
  262.     INLINE PASCAL $3F3C, $004C, $A9E7;
  263.     (*$END*)
  264. PROCEDURE LSetCell*(dataPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; dataLen: INTEGER; theCell: Cell; lHandle: ListRef);
  265.     (*$IF NOT GENERATINGCFM*)
  266.     INLINE PASCAL $3F3C, $0058, $A9E7;
  267.     (*$END*)
  268. PROCEDURE LSetSelect*(setIt: BOOLEAN; theCell: Cell; lHandle: ListRef);
  269.     (*$IF NOT GENERATINGCFM*)
  270.     INLINE PASCAL $3F3C, $005C, $A9E7;
  271.     (*$END*)
  272. PROCEDURE LDraw*(theCell: Cell; lHandle: ListRef);
  273.     (*$IF NOT GENERATINGCFM*)
  274.     INLINE PASCAL $3F3C, $0030, $A9E7;
  275.     (*$END*)
  276. (*$IF NOT STRICT_LISTS *)
  277. PROCEDURE LGetCellDataLocation*(VAR offset: INTEGER; VAR len: INTEGER; theCell: Cell; lHandle: ListRef);
  278.     (*$IF NOT GENERATINGCFM*)
  279.     INLINE PASCAL $3F3C, $0034, $A9E7;
  280.     (*$END*)
  281. (*$END*)
  282. (*$IF OLDROUTINENAMES *)
  283. PROCEDURE LDoDraw*(drawIt: BOOLEAN; lHandle: ListRef);
  284.     (*$IF NOT GENERATINGCFM*)
  285.     INLINE PASCAL $3F3C, $002C, $A9E7;
  286.     (*$END*)
  287. PROCEDURE LFind*(VAR offset: INTEGER; VAR len: INTEGER; theCell: Cell; lHandle: ListRef);
  288.     (*$IF NOT GENERATINGCFM*)
  289.     INLINE PASCAL $3F3C, $0034, $A9E7;
  290.     (*$END*)
  291. (*$END*)
  292.  
  293. (* $ALIGN RESET*)
  294. (* $POP*)
  295.  
  296.  END Lists.
  297.